//------------------------------------------------------------------------------//
// 
// MODULE   : camera.h
// 
// PURPOSE  : CCamera - Definition
// 
// CREATED  : 6/27/2002
// 
// (c) 2002 LithTech, Inc.  All Rights Reserved
// 
//------------------------------------------------------------------------------//


#ifndef __CAMERA_H__
#define __CAMERA_H__

#include "..\ltclientshell.h"

// Engine includes
#include <ltbasedefs.h>
#include <boost/shared_ptr.hpp>
class camera ;

typedef boost::shared_ptr<camera> camera_ptr ;


//-----------------------------------------------------------------------------
class camera 
{
    typedef camera class_type ;

private:
	// Construction / destruction
    camera(HLOCALOBJ cameraHandle) : m_hObject(cameraHandle) {}
public:
    ~camera() ;


	static camera_ptr create_camera();
    void set_position(const LTVector& pos) ;
    void set_rotation(const LTRotation& rot) ;
    void set_position_and_rotation(const LTVector& pos, const LTRotation& rot) ;
    LTVector position() const ;
    LTRotation rotation() const ;
    float debug_speed() const { return m_debugMoveSpeed ;}
	HOBJECT camera_handle()		{ return m_hObject; }
	bool set_camera_rect(float x,float y,float nWidth,float nHeight);

private:

	HLOCALOBJ m_hObject;
    float m_debugMoveSpeed ;
	
};


#endif // __CAMERA_H__
